<?php

namespace App\Models\Game\Config;

use App\Models\Game\Model;
use App\Models\Traits\Game\LogsActivity;

class Activity extends Model
{
    use LogsActivity;

    /**
     * 数据表名称
     *
     * @var string
     */
    protected $table = 't_config_activity';

    /**
     * 不可批量赋值的字段
     *
     * @var array
     */
    protected $guarded = [];

    /**
     * 进行类型转换的字段
     *
     * @var array
     */
    protected $casts = [
        'info' => 'array',
        'created' => 'timestamp',
        'updated' => 'timestamp'
    ];

    /**
     * 活动类型【签到】
     */
    const TYPE_SIGN = 10;

    /**
     * 活动类型【排行】
     */
    const TYPE_RANKING = 20;

    /**
     * 活动类型【转盘】
     */
    const TYPE_TURNTABLE = 30;

    /**
     * 活动类型【付费转盘】
     */
    const TYPE_TURNTABLE_PAY = 31;

    /**
     * 开启状态（关闭）
     */
    const ENABLE_OFF = 0;

    /**
     * 开启状态（开启）
     */
    const ENABLE_ON = 1;

    /**
     * 查询一条数据
     *
     * @param string $platCode
     * @param int $type
     * @return \Illuminate\Database\Eloquent\Model
     */
    protected function findByType($platCode, $type)
    {
        return $this->newQuery()
            ->where('plat_code', $platCode)
            ->where('type', $type)
            ->first();
    }

    /**
     * 更新或创建一条数据
     *
     * @param string $platCode
     * @param int $type
     * @param array $data
     * @return \Illuminate\Database\Eloquent\Model
     */
    protected function updateOrCreateByType($platCode, $type, array $data = [])
    {
        return $this->newQuery()->updateOrCreate([
            'plat_code' => $platCode,
            'type' => $type,
        ],
            $data
        );
    }
}
